home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 002a / life50.zip / LIFE050.DOC < prev    next >
Text File  |  1989-02-19  |  13KB  |  237 lines

  1.  
  2. Notes on TurboLife version 0.50 (12/25/86) (PLEASE READ THESE!):
  3.  
  4. To contact me
  5. =============
  6.   Direct all problem reports, suggestions, complaints, cash donations etc. to
  7. Bela Lubkin via USnail, Ma Bell, CompuServe or local BBS.  My various addresses
  8. and numbers are:
  9.  
  10. USnail:
  11.   Bela Lubkin
  12.   406 Murray Ave.
  13.   Aptos, CA  95003
  14.  
  15. Ma Bell:
  16.   (408) 662-0535 (voice)
  17.  
  18. CompuServe:
  19.   73047,1112 (EasyPlex)
  20.  
  21. Local BBS (Santa Cruz, CA):
  22.   "Filbo" on Pyrzqxgl, (408) 336-3134 (Zend mail)
  23.  
  24. PLEASE CONTACT ME IF YOU FIND A BUG OR WANT TO SUGGEST A FEATURE!!!!  
  25. Apathy sucks!!!
  26.  
  27. What has changed since version 0.39
  28. ===================================
  29.   Most importantly, I converted the innermost loop of the generation routine
  30. from Turbo Pascal to assembly language.  The first step was a straightforward
  31. port to assembly language, making use of registers as much as possible.  This
  32. resulted in a 3-to-1 speedup.  Next, I modified the algorithm in certain ways,
  33. and "bummed" the code as much as possible.  This brought the speedup to about
  34. 4-to-1.  Finally, I ran into a program called FASTLIFE on a local BBS.  It had
  35. radically different performance characteristics: it was much faster for densely
  36. packed action, but much slower for sparse areas.  I spoke to the author, Dan
  37. McMullen, and got some extremely useful ideas.  I had been dealing with a bit
  38. at a time, in registers; I now deal with a byte at a time, as much as possible.
  39. This brings the total speedup to 5.5-to-1 for the simplest figures, and an
  40. amazing 16-to-1 for densely packed action.  My benchmark suite, which has a
  41. great deal of variety in its tests, shows an overall speedup of 6.45 times.
  42. Mileage may vary <grin>.  My heartfelt thanks to Dan!
  43.  
  44.   Other changes include:
  45.     o Directory window: when saving or loading a file, if you give a wildcard
  46.       filename such as *.LIF, a directory window pops up and you can select the
  47.       desired file interactively.  The directory window is fully aware of the
  48.       DOS 2.0 directory structure, and will let you walk about different
  49.       directories.
  50.     o Overwrite protection: you are asked before TurboLife will overwrite an
  51.       existing file.
  52.     o The Undo command will undo one Go, single step or Load command.  If Undo
  53.       does not appear on your main menu, you don't have enough memory for it;
  54.       you will need up to 32K more than you need to be able to run TurboLife at
  55.       all, depending on your video board.  Total memory needs range from about
  56.       105K on a CGA (Undo disabled) to about 220K on a VEGA Deluxe in 640x480
  57.       resolution (Undo enabled).
  58.     o Mutations: when mutations are enabled, a single, randomly chosen pixel
  59.       may be changed in any particular generation.  How often this occurs is
  60.       settable, anywhere from every generation to once per thousand
  61.       generations.
  62.     o Support for more graphics hardware:
  63.         EGA with mono or ECD monitor (640x350)
  64.         Olivetti M24/AT&T 6300/Xerox 6030 (640x400)
  65.         Toshiba T3100 (640x400)                                (-experimental-)
  66.         Video-7 VEGA Deluxe/QuadRAM QuadEGA Prosync (640x480)  (-experimental-)
  67.       Any reports on the Toshiba T3100 and the VEGA/QuadRAM cards will be
  68.       appreciated.
  69.     o On graphics hardware with several resolutions available, you can choose
  70.       which resolution to use.  This may be useful for looking at saved figures
  71.       which make use of wrap effects.  FACTORY.LIF is an example of such a
  72.       figure: it is interesting on any board, but particularly amazing at a
  73.       resolution of 640x200.
  74.     o When a file is loaded which was saved on lower resolution graphics
  75.       hardware, a check is made to see whether any features of the saved figure
  76.       were meant to wrap around the edges of the screen.  If the first and last
  77.       lines of the saved image are found to be identical, the additional lines
  78.       of the screen are filled with copies of that same line.  The same is done
  79.       for the first and last columns of the saved figure.  This means that, for
  80.       instance, "great circle" images saved on the CGA can be loaded on an EGA,
  81.       at 640x350 resolution, without losing their continuity.
  82.     o More stringent checking is done when files are loaded to ensure that only
  83.       valid files are loaded.  (In particular, using the wrong function to load
  84.       a .RUL or .LIF file will no longer appear to work while actually
  85.       failing).
  86.     o The rule "a dead pixel with no neighbors springs to life" may now be
  87.       declared.
  88.     o When changing rules, the entire screen is considered under the new rules,
  89.       not just the points that had been active under the old rules.
  90.     o File load/save status messages now stay on screen for 5 seconds or until
  91.       a key is pressed.  These delays now work properly on the Tandy 2000.
  92.     o Save files are now 1/2 as large as before.
  93.     o WordStar key sequences are supported everywhere that keypad keys work;
  94.       keypad keys do not require NumLock to be turned off, except the "5" key,
  95.       used in the Rule editor.  Why IBM chose to make that key generate no data
  96.       is beyond me...
  97.     o Many bugs have been fixed.
  98.     o Probably more that I forget.  It's been a year!
  99.  
  100. "Flicker between the graphics and text areas"
  101. =============================================
  102.   If you see a rapidly flickering point just to the right of the playing field
  103. (to the left of the menu and other text), good!  You're supposed to.  While the
  104. generation algorithm is thinking about a single line of the screen, it turns on
  105. a point at the right of that line to show its progress.  This was put in the
  106. program when it was more than 20 times as slow as it is now, and I was using an
  107. 8088 machine with 640x400 resolution, to boot.  While waiting up to a minute
  108. for a generation to complete, it was good to have some indication that the
  109. program hadn't crashed yet.  I've left the indicator in because it acts as sort
  110. of a "heartbeat meter", giving you an at-a-glance idea of how fast the program
  111. is moving at the time.  You can gain some insight into how the program works by
  112. observing the indicator while playing with complicated figures.  For instance,
  113. draw a line all the way across the screen horizontally.  Turn wrap on, Go, and
  114. watch the indicator.
  115.  
  116. What's in the distribution ARC file
  117. ===================================
  118.   The distribution ARC file contains this file (LIFE050.DOC), LIFE050.COM, and
  119. a number of rule sets and figures; unless otherwise noted, all rule sets and 
  120. figures, and their names, are my own.
  121.  
  122. The rule sets are as follows:
  123.   LIFE.RUL - standard Life rules (John Horton Conway)
  124.   3-4LIFE.RUL - 3-4 Life, as defined in "The Recursive Universe" (TRU)
  125.   FREDKIN.RUL - Fredkin's Game (TRU).  Anything you enter is duplicated
  126.   CRYSTALS.RUL - Homebrewed set of rules that make pretty crystals
  127.   CRYSLIVE.RUL - By Ward Christensen
  128.   A.RUL - Slightly modified normal Life, has some interesting patterns
  129.   FIRE.RUL - interesting rules that generate fire-like patterns -- try a
  130.              vertical or horizontal bar, for instance
  131.   LACE.RUL - makes lace-like patterns
  132.   DOWN.RUL - inspired by Graeme McRae.  Any figure simply moves down the screen
  133.   XOR.RUL - by Graeme McRae
  134.   DOWNGROW.RUL - modified DOWN.RUL, sends interesting streamers down the screen
  135.   OOZE1.RUL through OOZE4.RUL - four variations on a theme: rules that... ooze!
  136.   
  137. The figures are as follows:
  138.   3WAY.LIF - An engineered 3 way collision
  139.   R5OMINO.LIF - The famous R Pentomino (TRU).  1103 generations to completion
  140.   OSCILLAE.LIF - An assortment of oscillators from TRU.  Left to right, they
  141.                  are: Toad, Beacon, Clock, Pulsar, Figure 8, Pentadecathlon,
  142.                  Barber Pole, Flip-flop, Galaxy, Tumbler, Clock II, stabilized
  143.                  Shuttle, B Heptomino Shuttle, Glider, Lightweight,
  144.                  Middleweight and Heavyweight spaceships
  145.   FLOTILLA.LIF - An overweight spaceship with flotilla escort (TRU)
  146.   ACORN.LIF - Another long messy figure, this one goes for 5206 generations
  147.               before stabilizing (TRU)
  148.   GLIDRGUN.LIF - A glider gun (TRU).  Includes an Eater (TRU) to consume the
  149.                  gun's output
  150.   MAKEGGUN.LIF - "Thirteen gliders collide to form a glider gun" (TRU)
  151.   NEWGUN.LIF - "New gun", a different flavor of glider gun.  (TRU)
  152.   MACHNGUN.LIF - A "machine gun" made out of multiple concatenated glider guns
  153.   FACTORY.LIF - A glider factory made out of cooperating glider guns
  154.   PUFTRAIN.LIF - Puffer train.  Given enough screen space, this eventually
  155.                  stabilizes (becomes periodic), generating an ever-
  156.                  lengthening tail of debris.  Stabilization occurs at
  157.                  generation 5533, but there is not enough screen space on
  158.                  any TurboLife-supported video board to see more than a hint
  159.                  of the stabilization.  (2800 pixels horizontal would be
  160.                  necessary to carry it out to full stabilization).  (TRU)
  161.   OSCILLAE.3-4 - A bunch of oscillators from 3-4 Life (load the 3-4 Life rules
  162.                  first -- these won't do much under normal Life rules).  Around
  163.                  the outside, clockwise, ignoring duplicates, are: Ward
  164.                  Christensen's object (I'll let him name it!), Broken T (TRU),
  165.                  Bleeper (TRU), Frog, T (TRU), and Y.  On the next row in are:
  166.                  3-4 Spaceship (TRU), 3-4 Clock (TRU), Shaker, Broken 3-4
  167.                  Clock.  In the center are a Bullfrog and a Twombler
  168.   YOW.CRY - an interesting initial pattern for the rule set "Crystals".  It is
  169.             saved with mutations enabled, set at a low rate; you may also want
  170.             to run it with mutations disabled entirely
  171.   T-BARS.3-4 - a very interesting scenario for 3-4 Life
  172.   MOREBARS.3-4 - similar to T-BARS.3-4
  173.   REPLIGRAF.XOR - By Graeme McRae  (see REPLIGRAF.DOC)
  174.   CREATION.OOZ - let there be ooze!
  175.  
  176. Adding support for additional video boards
  177. ==========================================
  178.   I am continually on the lookout for more video boards to add support for.
  179. If you have a video board which does something beyond the standard IBM
  180. 640x200 mode, give me information on it and I'll try to support it.  Each
  181. added board costs me something like 100 bytes of code, so I am not even going
  182. to start worrying about it yet.
  183.  
  184.   What I need to know: I access the video memory of the board directly.  The
  185. memory layout must be similar to the CGA's in that each scan line must
  186. consist of contiguous bytes, each byte containing 8 pixels, the high bit being
  187. the leftmost displayed bit.  Therefore, in order to plot, all I need to know
  188. is the formula for the address of a scan line, given its vertical coordinate.
  189. Thus for the CGA, BaseAddress(Y)=2000h*(Y AND 1) + 80*(Y DIV 2).  Other than
  190. that, I must have the following information: the resolution; how to turn this
  191. mode on; how to turn it off; how to generate text, if not through standard
  192. BIOS writes; and most importantly, how to detect that a machine has this
  193. capability.  I may end up forced to add a manual install-for-video-board
  194. routine to the program, but I will not if I can possibly help it.  Additional
  195. information that would be useful: how to modify the foreground and background
  196. colors, if applicable.  Note that in all cases I'm interested in the highest
  197. possible resolution of the card, and that in fact my code cannot support
  198. multicolor modes like the CGA's 320x200; it can support multiplane setups
  199. like EGA mono, but only by ignoring all but one plane.  Thus it may be
  200. necessary to diddle palette registers to make a single plane look good.
  201.  
  202. Sigma SR400!
  203. ============
  204.   IN PARTICULAR, I am all ready to support the Sigma SR400 board, with 640x400
  205. resolution, but I do not know how to detect this board at runtime.  The
  206. detection method must be unambiguous.  If you have an SR400, or have any
  207. information on it, please let me know!
  208.  
  209. Thanks
  210. ======
  211.   I want to thank John Conway for inventing Life; Piers Anthony and Martin
  212. Gardner for making me aware of it; Dan McMullen for helping me refine my
  213. generation algorithms; Kim Kokkonnen, Neil J. Rubenking, Doug Hogarth, Dave
  214. Hoagland, Don Watkins, Joan Friedman, Grame McRae, Ward Christensen, Joe 
  215. Kyle and many others for helping me test the latest versions; and most 
  216. especially the dozens of people who have made comments and suggestions about 
  217. the program even when I wasn't actively soliciting responses. 
  218.  
  219.   Believe me, I >like< getting suggestions and even bug reports.  Easy
  220. suggestions may get implemented right away; bug reports will be dealt with as
  221. quickly as possible.  Even if I don't take you up on your suggestion, I
  222. appreciate knowing that you're out there and have enjoyed using my program.
  223.  
  224.   By the way, one suggestion that I am not going to take up is that of using
  225. color as another dimension of the program.  I may eventually support the
  226. ability to set the foreground and background colors of the playing screen, for
  227. esthetics; I will not support color as an active part of the game.  It slows
  228. things down, and the uses I've seen for color in Life games have seemed
  229. contrived at best.
  230.  
  231.   Any input appreciated.
  232.  
  233.   -  Bela Lubkin
  234.      December 25, 1986
  235. 
  236.  
  237.